// File: src/core/tasks/Task.cpp
#include "Task.h"
#include <ctime>
#include <sstream>
#include <iomanip>

// 定义并初始化静态成员变量
int Task::nextId = 1;

// 实现静态成员函数：解析日期时间字符串为time_t
std::time_t Task::parseDateTime(const std::string& datetimeStr) {
    std::tm tm = {}; // 初始化时间结构体
    std::istringstream ss(datetimeStr);

    // 尝试解析 "YYYY-MM-DD HH:MM" 格式（如 "2023-12-15 14:30"）
    ss >> std::get_time(&tm, "%Y-%m-%d %H:%M");
    if (ss.fail()) {
        // 如果解析失败，尝试仅解析 "YYYY-MM-DD" 格式（默认时间为00:00）
        ss.clear();
        ss.str(datetimeStr);
        ss >> std::get_time(&tm, "%Y-%m-%d");
    }

    // 解析失败返回-1
    if (ss.fail()) {
        return -1;
    }

    // 转换为time_t类型（自1970年1月1日以来的秒数）
    return std::mktime(&tm);
}
